package com.by.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @version 1.0
 * @Author 彭彦彬
 * @Date 2025/4/16 20:10
 * @注释 Redis 工具类
 */
@Component
public class RedisUtils {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 向 Redis Hash 结构中添加数据
     *
     * @param key   Redis 的 Key
     * @param field Hash 中的字段名
     * @param value 字段对应的值
     */
    public void addHash(String key, String field, String value) {
        HashOperations<String, Object, Object> hashOps = redisTemplate.opsForHash();
        hashOps.put(key, field, value);
    }

    /**
     * 从 Redis Hash 结构中获取数据
     *
     * @param key   Redis 的 Key
     * @param field Hash 中的字段名
     * @return 字段对应的值
     */
    public Object getHash(String key, String field) {
        HashOperations<String, Object, Object> hashOps = redisTemplate.opsForHash();
        return hashOps.get(key, field);
    }

    /**
     * 删除 Redis Hash 结构中的字段
     *
     * @param key   Redis 的 Key
     * @param field Hash 中的字段名
     */
    public void deleteHash(String key, String field) {
        HashOperations<String, Object, Object> hashOps = redisTemplate.opsForHash();
        hashOps.delete(key, field);
    }

    /**
     * 根据用户id获取其购物车所有商品
     * @param key
     * @return
     */
    public Map<String, String> getUserCart(String key){
        HashOperations<String, String, String> hashOps = redisTemplate.opsForHash();
        return hashOps.entries(key);
    }
}